<?php

namespace Home\Model;

use Sooc\Model;

class UserModel extends Model
{
    //如果不希望依赖字段缓存或者想提高性能，也可以在模型类里面手动定义数据表字段的名称，可以避免IO加载的效率开销
    protected $fields = array('id', 'username', 'email', 'age');
    protected $pk = 'id'; //默认值就是id，因此如果是id的话可以无需定义

    //定义后，调用add方法写入用户数据的时候，只能写入'account','password','nickname','email'这几个字段，编辑的时候只能更新'nickname','email'两个字段。
    protected $insertFields = array('account', 'password', 'nickname', 'email');
    protected $updateFields = array('nickname', 'email');

    //自动验证
    protected $_validate = array(
        array('verify', 'require', '验证码必须！'), //默认情况下用正则进行验证
        array('name', '', '帐号名称已经存在！', 0, 'unique', 1), // 在新增的时候验证name字段是否唯一
        array('value', array(1, 2, 3), '值的范围不正确！', 2, 'in'), // 当值不为空的时候判断是否在一个范围内
        array('repassword', 'password', '确认密码不正确', 0, 'confirm'), // 验证确认密码是否和密码一致
        array('password', 'checkPwd', '密码格式不正确', 0, 'function'), // 自定义函数验证密码格式
    );

    //自动完成，程序会先完成自动验证后，才进行自动完成
    protected $_auto = array(
        array('status', '1'),  // 新增的时候把status字段设置为1
        array('password', 'md5', 3, 'function'), // 对password字段在新增和编辑的时候使md5函数处理
        array('name', 'getName', 3, 'callback'), // 对name字段在新增和编辑的时候回调getName方法
        array('update_time', 'time', 2, 'function'), // 对update_time字段在更新的时候写入当前时间戳
    );

}